import pandas as pd
import math
def extract_groups_to_csv(xlsx_file, sheet_name, output_csv=None):
    """
    从Excel指定行提取数据并分组导出为CSV
    
    参数:
    xlsx_file (str): Excel文件名（含路径）
    sheet_name (str): 工作表名称
    row_index (int): 要读取的行索引（从0开始）
    output_csv (str): 输出的CSV文件名（默认自动生成）
    """
    # 读取Excel文件
    df = pd.read_excel(xlsx_file, sheet_name=sheet_name, header=None)
    mask = df.astype(str).apply(lambda row: row.str.contains(r'总分（100）')).any(axis=1)
    row_indexs = df.index[mask].tolist()
    row_index = row_indexs[0]

    # 验证行索引是否有效
    if row_index >= len(df) or row_index < 0:
        raise IndexError(f"行索引 {row_index} 超出范围（0-{len(df)-1}）")
    
    # 获取指定行数据（跳过前两列）
    row_data = df.iloc[row_index, 2:].tolist()
    
    # 计算分组数量
    num_groups = math.ceil(len(row_data) / 5)
    
    # 创建分组数据
    grouped_data = []
    for i in range(num_groups):
        start_idx = i * 5
        end_idx = start_idx + 5
        group = row_data[start_idx:end_idx]
        grouped_data.append(group)
    
    # 创建DataFrame
    result_df = pd.DataFrame(grouped_data)
    
    # 设置默认输出文件名
    if output_csv is None:
        base_name = xlsx_file.split('.')[0]
        output_csv = f"{base_name}_{sheet_name}_row{row_index}.csv"
    
    # 导出CSV（不包含索引和列名）
    result_df.to_csv(output_csv, index=False, header=False)
    print(f"成功导出数据到: {output_csv}")
    print(f"分组情况: {len(row_data)}个数据 -> {num_groups}组")
# 使用示例
if __name__ == "__main__":
    # 示例调用（实际使用时修改参数）
    excel_path = "IR+MR.xlsx"
    sheets = pd.read_excel(excel_path, sheet_name=None)
    print(list(sheets.keys()))
    for sheet in list(sheets.keys()):
        extract_groups_to_csv(
            xlsx_file=excel_path,
            sheet_name=sheet,
            output_csv=sheet+".csv"
        )